import { UserConfig, ConfigEnv } from 'vite';
import { createVitePlugins } from './build/vite/plugins';
import path from 'path';
import proxy from './build/vite/proxy';
import { VITE_PORT } from './build/constant';

function resolve(dir) {
  return path.join(__dirname, dir);
}

// 自适应px 转rem
const px2rem = require('postcss-px2rem');
const postcss = px2rem({
  remUnit: 100, // 基准大小, 与App.vue中动态计算数值保持一致
});

// https://vitejs.dev/config/
export default ({ command }: ConfigEnv): UserConfig => {
  const isBuild = command === 'build';
  return {
    base: isBuild ? '/dist' : '/',
    resolve: {
      alias: {
        'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
        '@': resolve('src'),
        '#': resolve('types'),
      },
    },
    // plugins
    plugins: createVitePlugins(isBuild),

    // css
    css: {
      postcss: {
        plugins: [postcss],
      },
      preprocessorOptions: {
        less: {
          modifyVars: {
            // 此处也可设置直角、边框色、字体大小等
            'primary-color': '#1677ff',
            'link-color': '#1677ff',
          },
          javascriptEnabled: true,
        },
      },
    },

    // server
    server: {
      hmr: { overlay: false }, // 禁用或配置 HMR 连接 设置 server.hmr.overlay 为 false 可以禁用服务器错误遮罩层
      // 服务配置
      port: VITE_PORT, // 类型： number 指定服务器端口;
      open: false, // 类型： boolean | string在服务器启动时自动在浏览器中打开应用程序；
      cors: false, // 类型： boolean | CorsOptions 为开发服务器配置 CORS。默认启用并允许任何源
      host: '0.0.0.0', // IP配置，支持从IP启动
      proxy,
    },
  };
};
